package com.lanou3g.code0412.inter;

/**
 * If there are no bugs, it was created by Chen FengYao on 2018/4/12;
 * Otherwise, I don't know who created it either
 */
// 定义接口 与定义类一样
// 区别是 class关键字 改为 interface关键字
public interface USB {
    // 接口与 类一样, 可以写属性,可以写方法
    // 但是不同的是, 接口中 只能写
    // 常量 和 抽象方法

    // 由于接口里 只能出现常量
    // 所以定义 常量时 可以不写public static final
    public static final String VOLTAGE = "5V";
//    int A = 3;

    // 接口里只能由 public 的抽象方法
    // 不能够有普通方法,它也不是类,也没有构造方法
    // 所以 方法的public abstract 可以不写
    public abstract String sendData();

    public abstract void receiveData(String data);

}
/*
接口和抽象类的区别:
1. 语法角度:
1.1抽象类本质上还是一个类,在使用时,抽象类中可以
存在普通方法和成员变量
而接口 是单独的类型, 在使用时 只能存在静态常量和
抽象方法
1.2 接口中所有的方法可以不写abstract也是抽象方法
而抽象类中的抽象方法,必须写abstract关键字
1.3 抽象类必须被继承 才能够使用,而接口必须被实现才能被使用
一个类只能继承一个类,但是可以实现多个接口
2. 含义角度
当我们使用抽象类的时候 通常想表达一种 "is a" 的含义,即当前类
和被继承类之间存在着 概念上的"父子关系";
而使用接口的时候, 通常是想表达一种 "like a" 的含义,即只是确定
当前类具有某种能力(具有某些方法),而没有概念上的"父子关系"
3. 使用角度
当一个类有确切的父子关系时,我们使用抽象类,否则使用接口(即使不确定
是否有确切的父子关系,我们会优先考虑接口,毕竟类只能继承一次);
如果一个类中有实体方法,那么我们只能使用抽象类

*/
